const express = require('express');
const router = express.Router();  // 定义 router
const axios = require('axios');  // 使用 axios 发送 HTTP 请求
const crypto = require('crypto');  // 用于生成签名

// 讯飞星火大模型认证信息
const APPID = '13810dd7';
const API_KEY = '28a4d6164f8cd0d86f68980bbf7f518d';
const API_SECRET = 'YTE2MmNjMjFlNDU3MGUxZDI3NWRkYmZi';

// 讯飞星火大模型 API URL
const XUNFEI_API_URL = 'https://spark-api-open.xf-yun.com/v1/chat/completions';

// 生成签名
const generateSignature = (apiKey, apiSecret) => {
  const timestamp = Math.floor(Date.now() / 1000);
  const signature = crypto.createHmac('sha256', apiSecret).update(apiKey + timestamp).digest('hex');
  return { timestamp, signature };
};

// 处理客户端的 WebSocket 连接请求
router.post('/message', async (req, res) => {
  const { message } = req.body;
  console.log('Received from client:', message);

  // 构造请求消息
  const requestMessage = {
    max_tokens: 4096,
    top_k: 4,
    temperature: 0.5,
    messages: [
      {
        role: "system",
        content: "你现在是一名专业的书籍专家，你阅读过各种书籍，能做出精准的书籍评价；接下来请用书籍专家的口吻和用户对话。,自动生成书籍描述，减少用户手动输入的工作量。\n\n根据书籍内容生成推荐语，帮助用户更好地了解书籍。\n\n生成用户评论，增加社区互动。"
      },
      {
        role: "user",
        content: message
      }
    ],
    model: "4.0Ultra"
  };

  // 设置请求头
  const headers = {
    "Authorization": `Bearer ${API_KEY}:${API_SECRET}`
  };

  try {
    // 发送 HTTP 请求到讯飞星火大模型 API
    const response = await axios.post(XUNFEI_API_URL, requestMessage, { headers });

    // 处理响应
    const modelResponse = response.data.choices[0].message.content;
    console.log('Model reply:', modelResponse);

    // 向客户端返回模型的响应
    res.json({ message: modelResponse });
  } catch (error) {
    console.error('Error from Xunfei:', error);
    res.status(500).json({ message: 'Error communicating with Xunfei API' });
  }
});

module.exports = router;  // 导出 router